<?php
Yii::import("ext.xupload.models.XUploadForm");

class FichasController extends Controller
{
	
    
	public function behaviors(){
		return array(
			'wizard'=>array(
			'class'=>'application.components.WizardBehavior',
			'steps'=>array('Registro','Confirmacion'),
			'events'=>array(
						'onStart'=>'wizardStart',
						'onProcessStep'=>'registroWizardProcessStep',
						'onFinished'=>'wizardFinished',
						'onInvalidStep'=>'wizardInvalidStep',
						'onSaveDraft'=>'wizardSaveDraft'
					),
					'menuLastItem'=>'Revision',
				)
				);	
	}
	
	/*
	public function beforeAction($action) {
		$config = array();
		switch ($action->id) {
			case 'registration':
				$config = array(
					'steps'=>array('user', 'userProfile', 'contactDetails', 'paymentDetails'),
					'events'=>array(
						'onStart'=>'wizardStart',
						'onProcessStep'=>'registroWizardProcessStep',
						'onFinished'=>'wizardFinished',
						'onInvalidStep'=>'wizardInvalidStep',
						'onSaveDraft'=>'wizardSaveDraft'
					),
					'menuLastItem'=>'Register'
				);
				break;			
			case 'resumeRegistration':
				$config['steps'] = array(); // only here to force attachment of WizardBehavior
			default:
				break;
		}
		if (!empty($config)) {
			$config['class']='application.components.WizardBehavior';
			$this->attachBehavior('wizard', $config);
		}
		return parent::beforeAction($action);
	}
	
	*/
	/*
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}
	
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('forms,registro'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('forms,registro'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
	*/
	
	
	
	
	/****COMIENZO REGISTRO****/
	
	public function actionImprimir()
	{
		if(!isset(Yii::app()->user->id))
			$this->redirect(array('panel/index'));
			
		//$grupo =Yii::app()->request->getQuery('grupo');
		if(isset($_POST['inscripcionId']))
		{
			$this->renderPartial('imprimir',array('inscripcionId'=>$_POST['inscripcionId']));			
		}
	}
	
	public function actionFoto()
	{
			if(!isset(Yii::app()->user->id))
			$this->redirect(array('panel/index'));
			
		/* Control de Permisos */
		$grupo =Yii::app()->request->getQuery('grupo');
		$continuar=0;
				
		$usuario=User::model()->findByPk(Yii::app()->user->id);
		$opcionesGrupo= explode(';', $usuario->opciones_grupo);
		
		foreach ($opcionesGrupo as $key=>$value)
		{
			$opcionesIndividual= explode(',', $value);
			if(md5($opcionesIndividual[1])==$grupo)			
				$continuar=1;
			
		}
		
		if($continuar==0)
			$this->redirect(array('panel/forms'));
		
		/* Fin Control Permisos */
		
		$model = new Foto();		
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		if(isset($_POST['Foto']))
		{
										
			$model->inscripcion_foto=CUploadedFile::getInstance($model, 'inscripcion_foto');
			
			if ($model->validate()) {				
				
				$archivo= 'kep/'.md5(Yii::app()->user->id.$model->inscripcion_foto).'.jpg';				
				$model->inscripcion_foto->saveAs($archivo);
				$_SESSION['foto']=$archivo;
				$_SESSION['grupo']=$grupo;					
				$this->redirect(array('registro'));
						
			}
		}
		
		/*BORRA LA SESION PARA INGRESAR OTRA FOTO */
		if(isset($_SESSION['foto']) && !empty($_SESSION['foto']))
		{
			$_SESSION['foto']='';
		}
		/*FIN BORRA LA SESION PARA INGRESAR OTRA FOTO */
		
		$this->render("foto",array('model'=>$model));
		
		
	}
	
	
	public function actionRegistro($step=null) {
		if(!isset(Yii::app()->user->id))
			$this->redirect(array('panel/index'));
			
		$this->pageTitle = 'Registro de Solicitudes de Acreditaciones';		
		$this->process($step);
	}
	
	public function actionFinalizar()
	{
		
	}
	
	public function registroWizardProcessStep($event) {
		$modelName = ucfirst($event->step);
		$model = new $modelName();		
		$model->attributes = $event->data;
		
		$datosRegistro=$this->read("Registro");
		
		if($modelName=="Confirmacion"){
			//$datosRegistro=$this->read("Registro");
			
		
									
				$model->persona_nombres_apellidos=strtoupper($datosRegistro['persona_nombres'].' '.$datosRegistro['persona_apellidos']);
				$model->persona_genero=strtoupper($datosRegistro['persona_genero']);
				$model->persona_altura_cm=strtoupper($datosRegistro['persona_altura_cm']);
				$model->persona_peso_kg=strtoupper($datosRegistro['persona_peso_kg']);
				$model->persona_tipo_sangre=strtoupper($datosRegistro['persona_tipo_sangre']);
				$model->persona_tipo_identificacion=strtoupper($datosRegistro['persona_tipo_identificacion']);
				$model->persona_numero_identificacion=strtoupper($datosRegistro['persona_numero_identificacion']);
				$model->persona_fecha_expiracion_documento=strtoupper($datosRegistro['persona_fecha_expiracion_documento']);
				$model->persona_fecha_nacimiento=strtoupper($datosRegistro['persona_fecha_nacimiento']);
				$model->persona_direccion=strtoupper($datosRegistro['persona_direccion']);
				$model->persona_telefono=strtoupper($datosRegistro['persona_telefono']);
				$model->persona_movil=strtoupper($datosRegistro['persona_movil']);
				$model->persona_email=strtoupper($datosRegistro['persona_email']);
				$model->persona_ciudad_estado=strtoupper($datosRegistro['persona_ciudad_estado']);
				
				$paisNacimiento= new Pais();		
				$resultadoPaisNacimiento = $paisNacimiento->findByPk($datosRegistro['persona_pais']);
				$resultadoPaisNacionalidad = $paisNacimiento->findByPk($datosRegistro['persona_nacionalidad']);
			
				
				$model->persona_pais=strtoupper($resultadoPaisNacimiento->pais_nombre);
				$model->persona_nacionalidad=strtoupper($resultadoPaisNacionalidad->pais_nombre);
				
				
				$model->persona_nombre_credencial=strtoupper($datosRegistro['persona_nombre_credencial']);
				$model->inscripcion_evento=strtoupper($datosRegistro['inscripcion_evento']);
				
				$deporteActividad = new DeporteActividad();
				$resultadoDeporteActividad = $deporteActividad->findByPk($datosRegistro['inscripcion_deporte']);		
				$model->inscripcion_deporte=strtoupper($resultadoDeporteActividad->deporte_actividad_descripcion);			
				
				$model->inscripcion_modalidad=strtoupper($datosRegistro['inscripcion_modalidad']);
				$model->inscripcion_categoria=strtoupper($datosRegistro['inscripcion_categoria']);
				
				$aplica_a = new CategoriaAplica();
				$resultadoAplica = $aplica_a->findByPk($datosRegistro['inscripcion_aplica']);	
		
		
				$model->inscripcion_aplica=strtoupper($resultadoAplica->categoria_aplica);
				$model->inscripcion_foto=$datosRegistro['inscripcion_foto'];

				
					
		
		
	if(!empty($datosRegistro['persona_fecha_nacimiento']))
	{
		$anoNacimiento = explode('/',$datosRegistro['persona_fecha_nacimiento']);
		
		if($anoNacimiento[2]>2011)
		{
			$model->persona_nombres_apellidos="ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";		
			$model->persona_genero="ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";
			$model->persona_tipo_sangre="ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";
			$model->persona_tipo_identificacion="ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";
			$model->persona_numero_identificacion="0";
			$model->persona_fecha_expiracion_documento="ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";
			$model->persona_fecha_nacimiento="ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";
			$model->persona_direccion="ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";
			$model->persona_telefono="ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";
			$model->persona_movil="ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";
			$model->persona_ciudad_estado="ADVERTENCIA: ADVERTENCIA: EL AÑO DE NACIMIENTO DEBE SER MENOR AL AÑO ACTUAL.";										
		}
	}	
	
	if(!empty($datosRegistro['persona_fecha_expiracion_documento']))
	{			
		$anoExpira = explode('/', $datosRegistro['persona_fecha_expiracion_documento']);
		if($anoExpira[2]<2011)
		{
			$model->persona_nombres_apellidos="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";		
			$model->persona_genero="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";
			$model->persona_tipo_sangre="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";
			$model->persona_tipo_identificacion="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";
			$model->persona_numero_identificacion="0";
			$model->persona_fecha_expiracion_documento="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";
			$model->persona_fecha_nacimiento="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";
			$model->persona_direccion="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";
			$model->persona_telefono="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";
			$model->persona_movil="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";
			$model->persona_ciudad_estado="ADVERTENCIA: LA FECHA DE EXPIRACIÓN DEL DOCUMENTO DEBE SER MAYOR O IGUAL AL AÑO ACTUAL.";				
						
		}
		
	}	
		$persona = new Persona();
		
		if($persona->find(
			"persona_numero_identificacion='{$datosRegistro['persona_numero_identificacion']}'"			
		))
		{
			
			$model->persona_nombres_apellidos="ADVERTENCIA: EL NÚMERO DE IDENTIFICACIÓN ".$datosRegistro['persona_numero_identificacion']." YA FUE REGISTRADO.";		
			$model->persona_genero="ADVERTENCIA: EL NUMERO DE IDENTIFICACIÓN YA FUE REGISTRADO.";
			$model->persona_tipo_sangre="ADVERTENCIA: EL NUMERO DE IDENTIFICACIÓN YA FUE REGISTRADO.";
			$model->persona_tipo_identificacion="ADVERTENCIA: EL NUMERO DE IDENTIFICACIÓN YA FUE REGISTRADO.";
			$model->persona_numero_identificacion="0";
			$model->persona_fecha_expiracion_documento="ADVERTENCIA: EL NUMERO DE IDENTIFICACIÓN YA FUE REGISTRADO.";
			$model->persona_fecha_nacimiento="ADVERTENCIA: EL NUMERO DE IDENTIFICACIÓN YA FUE REGISTRADO.";
			$model->persona_direccion="ADVERTENCIA: EL NUMERO DE IDENTIFICACIÓN YA FUE REGISTRADO.";
			$model->persona_telefono="ADVERTENCIA: EL NUMERO DE IDENTIFICACIÓN YA FUE REGISTRADO.";
			$model->persona_movil="ADVERTENCIA: EL NUMERO DE IDENTIFICACIÓN YA FUE REGISTRADO.";
			$model->persona_ciudad_estado="ADVERTENCIA: EL NUMERO DE IDENTIFICACIÓN YA FUE REGISTRADO.";				
			
		}
		
		if($datosRegistro['inscripcion_aplica']==15 || $datosRegistro['inscripcion_aplica']==43)
		{
			
			if(empty($datosRegistro['persona_altura_cm'])) 
			{
				$model->persona_altura_cm="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR ALTURA (CM).";
				$model->persona_numero_identificacion="0";
			}
			
			if(empty($datosRegistro['persona_peso_kg'])) 
			{
				$model->persona_peso_kg="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR PESO (KG).";
				$model->persona_numero_identificacion="0";
			}
			
			if(empty($datosRegistro['persona_fecha_expiracion_documento'])) 
			{
				$model->persona_fecha_expiracion_documento="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR FECHA EXPIRACION DEL DOCUMENTO.";
				$model->persona_numero_identificacion="0";
			}
			
			if(empty($datosRegistro['persona_fecha_nacimiento'])) 
			{
				$model->persona_fecha_nacimiento="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR FECHA DE NACIMIENTO.";
				$model->persona_numero_identificacion="0";
			}
			
			/*
			if(empty($datosRegistro['persona_direccion'])) 
			{
				$model->persona_direccion="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR DIRECCION.";
				$model->persona_numero_identificacion="0";
			}
			
			if(empty($datosRegistro['persona_telefono'])) 
			{
				$model->persona_telefono="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR TELEFONO.";
				$model->persona_numero_identificacion="0";
			}
			
			if(empty($datosRegistro['persona_movil'])) 
			{
				$model->persona_movil="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR MOVIL.";
				$model->persona_numero_identificacion="0";
			}
			
			if(empty($datosRegistro['persona_email'])) 
			{
				$model->persona_email="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR EMAIL.";
				$model->persona_numero_identificacion="0";
			}
			*/
			
			if(empty($datosRegistro['persona_ciudad_estado'])) 
			{
				$model->persona_ciudad_estado="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR CIUDAD O ESTADO.";
				$model->persona_numero_identificacion="0";
			}
			
			if(empty($datosRegistro['persona_ciudad_estado'])) 
			{
				$model->persona_ciudad_estado="ADVERTENCIA: LA CATEGORIA ATLETA DEBE INGRESAR CIUDAD O ESTADO.";
				$model->persona_numero_identificacion="0";
			}
			
			
		}
			
							
		}
		
		$form = $model->getForm();
		
			// Note that we also allow sumission via the Save button
			if (($form->submitted()||$form->submitted('save_draft')) && $form->validate()) {
				$event->sender->save($model->attributes);
				$event->handled = true;
			}
			else
				$this->render('form', compact('event','form'));
				
		
	}
	
// Wizard Behavior Event Handlers
	/**
	* Raised when the wizard starts; before any steps are processed.
	* MUST set $event->handled=true for the wizard to continue.
	* Leaving $event->handled===false causes the onFinished event to be raised.
	* @param WizardEvent The event
	*/
	public function wizardStart($event) {
		$event->handled = true;
	}

	/**
	* Raised when the wizard detects an invalid step
	* @param WizardEvent The event
	*/
	public function wizardInvalidStep($event) {
		Yii::app()->getUser()->setFlash('notice', $event->step.' is not a vaild step in this wizard');
	}

	/**
	* The wizard has finished; use $event->step to find out why.
	* Normally on successful completion ($event->step===true) data would be saved
	* to permanent storage; the demo just displays it
	* @param WizardEvent The event
	*/
	public function wizardFinished($event) {
		if ($event->step===true)
			$this->render('revision', compact('event'));
		else
			$this->render('finished', compact('event'));

		$event->sender->reset();
		Yii::app()->end();
	}

	/**
	* Saves a draft of the wizard that can be resumed at a later time
	* TODO: CAMBIAR MODELO
	* @param WizardEvent $event
	*/
	public function wizardSaveDraft($event) {
		$registro = new Registro();
		
		
		
		$uuid = $registro->saveRegistration($event->data);
		$event->sender->reset();
		$this->render('draft',compact('uuid'));
		Yii::app()->end();
	}
	
	/****FIN FICHAS****/
	
	// Uncomment the following methods and override them if needed
	/*
	public function filters()
	{
		// return the filter configuration for this controller, e.g.:
		return array(
			'inlineFilterName',
			array(
				'class'=>'path.to.FilterClass',
				'propertyName'=>'propertyValue',
			),
		);
	}

	public function actions()
	{
		// return external action classes, e.g.:
		return array(
			'action1'=>'path.to.ActionClass',
			'action2'=>array(
				'class'=>'path.to.AnotherActionClass',
				'propertyName'=>'propertyValue',
			),
		);
	}
	*/
}
?>